

#include <string.h>


typedef enum {false, true} Boolean;

#define TamanhoMaxAlfabeto 26

#define SIZE_AMOSTRAL_SPACE 256


Boolean ConstroiHuffman(int freq[],int n);
/* A partir das 'n' primeiras letras (2<=n<=26) come�ando com a letra
   'a', constr�i a �rvore de Huffman para compress�o de texto e guarda
   numa vari�vel local do m�dulo 'huffman.c'.  Numa outra vari�vel
   local guarda um vetor de apontadores para as folhas da �rvore
   (letras). Devolve 'true' se a constru��o teve sucesso; 'false' caso
   contr�rio. */
   
void LiberaHuffman();
/* Libera a mem�ria din�mica ocupada pelas estruturas criadas por
   'ConstroiHuffman'. */

Boolean Comprime(char *cars, char *bits, int *numBits, int numBitsMax);
/* Comprime a cadeia apontada por 'cars' (que termina com '\0') usando
   as estruturas j� constru�das, e deixa o resultado como uma
   seq��ncia de caracteres '0' e '1', simulando bits, na �rea apontada
   por 'bits'. Devolve em 'numBits' o n�mero total de bits gerado. Em
   caso de sucesso devolve 'true'; se aparecer um caractere inv�lido,
   ou se houver mais de 'numBitsMax' bits, devolve 'false'. */
   
Boolean Descomprime(char *cars, char *bits, int numBits, int numMaxCars);
/* Descomprime a cadeia de pseudo-bits apontada por 'bits', de
   comprimento 'numBits' seguindo a �rvore de Huffman j� constru�da.
   Coloca no fim da cadeia descomprimida o terminador '\0'. Em caso de
   sucesso devolve 'true'; se aparecer uma codifica��o incompat�vel
   com a �rvore, ou se houver mais caracteres que 'numMaxCars' devolve
   'false'.*/

/* --------------------------------------------------------- */
/* Fun��es auxiliares para os testes pelo programa principal */
/* --------------------------------------------------------- */

void ImprimeArvore();
/* Imprime a �rvore de Huffman num formato leg�vel */

